/**
 * 说明: 枚举与前面的字面量类型+联合类型组合的功能类似,都用来表示一组明确的可选值列表
 * 一般情况下,推荐使用字面量类型+联合类型的方式,因为相比于枚举,更加直观，简介，高效
 */
let songs: string[] = ['tom', 'cat']

enum Direction { Up='Up', Down='Down', Left='Left', Right='Right' }

    function ChangeDirection (direction: Direction) {
        console.log(direction)
    }

    ChangeDirection(Direction.Down)

// 枚举不仅用作类型,还提供值。
// 其他的类型在编译为js代码时会自动移除。但是,枚举类型会被编译为js代码
// (function (Direction) {
//     Direction["Up"] = "Up";
//     Direction["Down"] = "Down";
//     Direction["Left"] = "Left";
//     Direction["Right"] = "Right";
// })(Direction || (Direction = {})); //Direction如果没有值,就给一个空对象